---
title: SAIF.Presentation.Web.Controls.PopUps.Infragistics111 business rules
summary: Enumerated business rules with per-rule trigger, enforcement, and outcomes.
status: draft
owner: <owner>
last_reviewed: 2026-08-21
library: SAIF.Presentation.Web.Controls.PopUps.Infragistics111
reference_type: package
---

# SAIF.Presentation.Web.Controls.PopUps.Infragistics111 business rules

This page captures business rules enforced by this library's popup controls.

## BR-POPUP-001 Claim Activity note requires category and type selection before confirmation

| Field | Value |
| --- | --- |
| **Statement** | The Category and Type dropdowns must be populated (from cached/queried code tables) before the user can confirm a Claim Activity note; the popup instructs "Please select a category and type." |
| **Trigger** | `ClaimActivityPopup` becomes active and the user clicks the OK (`cmdYes`) button. |
| **Enforcement** | `ClaimActivityPopup.vb` — `LoadDropDowns()`, `YesButtonClick` (no explicit blocking validation is coded beyond dropdown population — the static instructional label in `ClaimActivityPopup.ascx` is the only enforcement UI observed; there is no code-level guard preventing confirmation with default/empty selections)*. |
| **Outcome** | `ConfirmAction(True, ClaimNoteEventArgs)` is raised carrying the selected category/type; actual persistence is the hosting page's responsibility. |
| **Source** | `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ClaimActivityPopup.vb`, `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ClaimActivityPopup.ascx` |

---

## BR-POPUP-002 External-view flag is auto-derived from the selected Claim Activity category

| Field | Value |
| --- | --- |
| **Statement** | When a Claim Activity Category is selected, the "External View" checkbox is automatically set based on that category's `LongDescription` code-table flag equal to `"Y"`. |
| **Trigger** | User changes the Category dropdown selection (`ddlCategoryCodeIndexChanged`). |
| **Enforcement** | `ClaimActivityPopup.vb` — `ddlCategoryCodeIndexChanged`: `chkExternalView.Checked = (ExternalView = "Y")`. |
| **Outcome** | The checkbox reflects the category's default external-view setting; the user may still override it before confirming. |
| **Source** | `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ClaimActivityPopup.vb` |

---

## BR-POPUP-003 Notify entry requires a Notify ID, a valid Notify Date, and the date must not precede today

| Field | Value |
| --- | --- |
| **Statement** | A Notify/Task entry cannot be confirmed unless a Notify ID is supplied; if supplied, a valid Notify Date is also required, and that date cannot be earlier than the current date. |
| **Trigger** | User clicks Save on `NotifyPopup` (and, for the notify portion of `ImageMovePopup`, whenever `txtNotifyText` is non-empty). |
| **Enforcement** | `NotifyPopup.vb` — `EditNotifyControls()`; `ImageMovePopup.vb` — `EditAlertControls()`. |
| **Outcome** | On failure, `ErrorMsg` is set to one of `MSG_ENTER_VALID_NOTIFY_ID` / `MSG_ENTER_VALID_NOTIFY_DATE` / `MSG_NOTIFY_DATE_PRIOR_TO_TODAY` and focus (`ControlWithFocus`) moves to the offending field; `ConfirmAction` is not raised. On success, `ConfirmAction(True, ...)` is raised. |
| **Source** | `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\NotifyPopup.vb`, `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ImageMovePopup.vb` |

---

## BR-POPUP-004 TODO Diary task Mail ID must resolve to a valid employee when required or supplied

| Field | Value |
| --- | --- |
| **Statement** | If `Task.MailidRequired` is set, a Mail ID must be entered; whenever a non-empty Mail ID is entered (required or not), it must resolve to a valid employee record (`clsEmployeeData.GetDataByMailID(...).IsValid`), or the confirmation is rejected and the field is flagged as an error. |
| **Trigger** | User clicks Yes on `TODOPopupControl`. |
| **Enforcement** | `TODOPopupControl.vb` — `YesButtonClick()`, `ValidateMailid()`. |
| **Outcome** | On failure: popup stays `Active`, `txtMailid.CssClass = "errorbackcolor"`, no `ConfirmAction` raised. On success: textbox reset, `ConfirmAction(True, TODOTaskEventArgs)` raised. |
| **Source** | `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\TODOPopupControl.vb` |

---

## BR-POPUP-005 A "RequiredTask" diary task offers only acknowledgement (no decline option)

| Field | Value |
| --- | --- |
| **Statement** | When `Task.TaskType = PopupTypes.RequiredTask`, the "Do you wish to create a Claim Task?" prompt and the No button are hidden, and the Yes button is relabeled "OK" — the task cannot be declined through this popup. |
| **Trigger** | `TODOPopupControl.Render()` while `Active`. |
| **Enforcement** | `TODOPopupControl.vb` — `Render()`. |
| **Outcome** | UI presents only an acknowledgement path for required tasks; optional tasks retain the Yes/No choice. |
| **Source** | `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\TODOPopupControl.vb` |

---

## BR-IMG-001 Claim context lookup blocks the worker's name for confidential claims the caller cannot view

| Field | Value |
| --- | --- |
| **Statement** | When `ImageFileCode = "CLAIM"`, the popup only displays the claimant's/worker's name if the current caller passes `CheckClaimSecurity` for that claim; otherwise the name is shown as `"Confidential"` and the field is marked invalid. |
| **Trigger** | User enters/changes a Claim context number and the auto-postback `txtContextNum_TextChanged` fires `EditContext()`. |
| **Enforcement** | `ImageMovePopup.vb` — `EditContext()` calling `CheckClaimSecurity(MyClaimData.Security, String.Empty, AccessAllowed, LastError)`. |
| **Outcome** | Save is blocked (`cmdSave.Enabled` is not set to `True`) unless access is allowed; `lblName.Text = "Confidential"` and `ErrorMsg` is populated otherwise. |
| **Source** | `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ImageMovePopup.vb` |

---

## BR-IMG-002 Conflict-claim visibility requires the ConflictClaim (ADSG_CLAIM_CONFLICT) AD resource

| Field | Value |
| --- | --- |
| **Statement** | If a claim's security profile flags it as a conflict claim (`IsConflict`), the caller (or, for a target Mail ID, that Mail ID) must hold the `ConflictClaim` AD resource, or access is denied. |
| **Trigger** | `CheckClaimSecurity` evaluation during claim-context lookup or Mail-ID-based image access check. |
| **Enforcement** | `ImageMovePopup.vb` — `CheckClaimSecurity()`: `mySecurity.IsAuthorized(ADSG_CLAIM_CONFLICT)` (current user, only when `mySecurity.Domain = "SAIF"`) or `mySecuritySystem.ResourceAccessValidCached(inMailId, ADSG_CLAIM_CONFLICT)` (target Mail ID). |
| **Outcome** | `outAllowAccess = False`, `outError = MSG_NOT_AUTH_CLAIM`. |
| **Source** | `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ImageMovePopup.vb` |

---

## BR-IMG-003 Exposure-claim, collateral-health, and hostile-worker claim visibility each require a distinct AD resource

| Field | Value |
| --- | --- |
| **Statement** | A claim flagged `IsExposure`, `IsHealthIssue`, or `IsHostileWorker` requires the caller/target Mail ID to hold, respectively, the `ExposureClaim` (`ADSG_CLAIM_EXPOSURE`), `CollateralHealthClaim` (`ADSG_CLAIM_COLLATERAL`), or `SecureClaim` (`ADSG_CLAIM_SECURE`) AD resource, or access is denied. |
| **Trigger** | Same as [BR-IMG-002](#br-img-002-conflict-claim-visibility-requires-the-conflictclaim-(adsg_claim_conflict)-ad-resource) — evaluated during `CheckClaimSecurity`. |
| **Enforcement** | `ImageMovePopup.vb` — `CheckClaimSecurity()`. |
| **Outcome** | `outAllowAccess = False`, `outError = MSG_NOT_AUTH_CLAIM` if any one check fails (checks are independent and cumulative — the first failing flag sets `outAllowAccess = False` but subsequent checks continue to run and may re-set the same outcome). |
| **Source** | `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ImageMovePopup.vb` |

---

## BR-IMG-004 Claim security checks are enforced only for the SAIF domain; non-SAIF callers are denied outright

| Field | Value |
| --- | --- |
| **Statement** | `CheckClaimSecurity` only evaluates the individual claim-security flags when `mySecurity.Domain = "SAIF"`; for any other domain, access is unconditionally denied with `"Error:  Only SAIF employee can view this page."`. |
| **Trigger** | Any `CheckClaimSecurity` invocation. |
| **Enforcement** | `ImageMovePopup.vb` — `CheckClaimSecurity()` — `Else` branch. |
| **Outcome** | `outAllowAccess = False`, `outError = "Error:  Only SAIF employee can view this page."` |
| **Source** | `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ImageMovePopup.vb` |

---

## BR-IMG-005 Certain system mailboxes are always allowed to receive image alerts

| Field | Value |
| --- | --- |
| **Statement** | Alerting one of a fixed set of system/service mailboxes (`clsMessages.ARSK_MAILID`, `LEGAL_MAILID`, `THIRD_PARTY_MAILID`, `CBP_MAILID`, `SERVICE_MAILID`, `PLUS_MAILID`) is always permitted regardless of AD group membership. |
| **Trigger** | `CheckImageSecurity(inImageFileCode, inMailId)` is called (public method — caller outside this library not identified)**. |
| **Enforcement** | `ImageMovePopup.vb` — `CheckImageSecurity()` — `Select Case inMailId.ToUpper` allow-list branches. |
| **Outcome** | Returns `True` without further AD check. |
| **Source** | `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ImageMovePopup.vb` |

---

## BR-IMG-006 Image access for the current user vs. a delegated Mail ID uses different authorization sources

| Field | Value |
| --- | --- |
| **Statement** | If the target Mail ID equals the currently logged-in user, image access is determined from the cached `HasImage` flag (`ADSG_IMAGE` resource, checked once per popup lifecycle via `SetSecurityUserImage()`); if the target Mail ID is a different user, access is instead checked live via `ImageServices.HasADAccessToImageResource(inImageFileCode, inMailId)`. |
| **Trigger** | `CheckImageSecurity(inImageFileCode, inMailId)` for a non-system Mail ID. |
| **Enforcement** | `ImageMovePopup.vb` — `CheckImageSecurity()` — `Case Else` branch. |
| **Outcome** | Returns the corresponding boolean access result. |
| **Source** | `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ImageMovePopup.vb` |

## Notes
- 7 of the 8 popup controls (all except `ImageMovePopup`) implement no independent authorization logic of their own.
- Mark inferred statements with `*` and unknown statements with `**`. Do not use bold inline confidence labels.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Security and authorization](security-authorization.md)
- [Control catalog](control-catalog.md)
- [Configuration settings](configuration.md)
- [API reference](api/index.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources
- `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ClaimActivityPopup.vb`
- `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ClaimActivityPopup.ascx`
- `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\NotifyPopup.vb`
- `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ImageMovePopup.vb`
- `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\TODOPopupControl.vb`
